Live sketching project (실시간 스케치 변환 프로젝트)
이 프로젝트는 웹캠 피드를 실시간으로 분석하여 연필로 그린 듯한 스케치 효과를 적용하는 OpenCV 기반의 파이썬 애플리케이션입니다.
주요 특징
- 실시간 비디오 처리: 웹캠에서 실시간으로 프레임을 캡처하여 처리합니다.
- 이미지 세분화 및 효과 적용: 그레이스케일 변환, 가우시안 블러, 캐니 엣지 검출(Canny Edge Detection) 및 임계값 처리(Thresholding)를 통해 스케치 효과를 구현합니다.
- 상호작용성: 웹캠이 켜진 상태에서 실시간으로 변화를 확인할 수 있으며, 엔터(Enter) 키를 눌러 종료할 수 있습니다.
코드 설명
스케치 효과를 만드는 핵심 함수와 실행 과정은 다음과 같습니다.
1. 스케치 생성 함수
입력받은 이미지를 필터링하여 스케치 이미지로 변환합니다.
def sketch(image):
# 이미지를 흑백으로 변환
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 가우시안 블러로 노이즈 제거
img_gray_blur = cv2.GaussianBlur(img_gray, (5,5), 0)
# 에지 추출 (Canny Edge Detection)
canny_edges = cv2.Canny(img_gray_blur, 20, 50)
# 이진화 처리로 결과 반전
ret, mask = cv2.threshold(canny_edges, 70, 255, cv2.THRESH_BINARY_INV)
return mask
2. 웹캠 제어 및 루프
웹캠을 활성화하고 매 프레임마다 스케치 기능을 적용합니다.
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
# 변환된 스케치 이미지를 보여줌
cv2.imshow('Our Live Sketcher', sketch(frame))
# 엔터 키(13)가 눌리면 루프 종료
if cv2.waitKey(1) == 13:
break
cap.release()
cv2.destroyAllWindows()